import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';
import { ValidationPipe } from '@nestjs/common';
import * as cookieParser from 'cookie-parser';
import { SwaggerModule, DocumentBuilder } from '@nestjs/swagger';
import { ApiResponseInterceptor } from './interceptors/api-response.interceptor';

async function bootstrap() {
  const app = await NestFactory.create(AppModule);
  
  // 全局管道
  app.useGlobalPipes(new ValidationPipe({
    whitelist: true, // 去除在验证类中不存在的属性
    transform: true, // 自动转换类型
  }));

  // 启用 CORS
  app.enableCors({
    origin: true, // 在生产环境中应该设置具体的域名
    credentials: true, // 允许携带认证信息
  });

  // 使用 cookie-parser 中间件
  app.use(cookieParser());

  app.setGlobalPrefix('api'); // 添加全局前缀
  app.useGlobalInterceptors(new ApiResponseInterceptor()); // 注册全局拦截器

  // 配置 Swagger
  const config = new DocumentBuilder()
  .setTitle('API 文档')
  .setDescription('NestJS API 文档示例')
  .setVersion('1.0')
  .addTag('auth') // 添加标签
  .addBearerAuth() // 添加 Bearer Token 支持
  .build();
  const document = SwaggerModule.createDocument(app, config);
  SwaggerModule.setup('apidoc', app, document); // 设置 Swagger 路径

  await app.listen(process.env.PORT ?? 3000);
}
bootstrap();
